/**
 * 
 */
package cn.com.gzheroli.util;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.jdbc.SQL;

import cn.com.gzheroli.core.common.entity.TableAndColumns;
import cn.com.gzheroli.core.util.NameHandler;

/**
 * @author lichangrong
 *
 */
public class GenSqlUtil {
	public static <T> String genSqlByClass(Class<T>  entityClass,Map<String,String> conMap,String type,Map<String,Object> tableColumns,String alias){
		String tableName = NameHandler.getTableName(entityClass.getSimpleName());
		//List<String> tableColumns=TableAndColumns.allTableColumns.get(tableName);
		SQL sql=new SQL();
		if(type!=null&&type.trim().equals("count")) {
			sql.SELECT("count(*)");
		}else {
			sql.SELECT("*");
		}
		sql.FROM(tableName+" "+alias);
		for(String con:conMap.keySet()){
			String columnName=NameHandler.getColumnName(con);
			columnName = tableColumns.get(con)==null?"":tableColumns.get(con).toString();
			/*if(!tableColumns.contains(columnName)) {
				continue;
			}*/
			if(columnName.equals("")) {
				continue;
			}
			if(conMap.get(con)==null) {
				sql.WHERE(alias+"."+columnName+"=#{"+con+"}");
			}else if(conMap.get(con).equals("like")) {
				sql.WHERE(alias+"."+columnName+" "+conMap.get(con)+" concat(concat('%', #{"+con+"}),'%')");
			}else {
				sql.WHERE(alias+"."+columnName+" "+conMap.get(con)+" #{"+con+"}");
			}
		}
		return sql.toString();
	}
	
}
